Confluent Schema Registry 도입 경험 공유: SubjectNameStrategy, Avro Union 이슈 해결

by DD
2년 전
조회수 6

Confluent Schema Registry 도입 전, SubjectNameStrategy별 장단점 분석을 위한 Pilot 프로젝트 진행

TopicNameStrategy, RecordNameStrategy, TopicRecordNameStrategy 등 3가지 전략의 특징 및 Avro Union 사용 시 이슈 정리

RecordNameStrategyTopicRecordNameStrategy 사용, AvroDeserializer 라이브러리 수정 등 실질적인 문제 해결 경험 공유

SubjectNameStrategy: 토픽과 스키마의 연결고리

SubjectNameStrategySchema Registry에서 스키마의 subject명을 결정하는 핵심 요소이다. TopicNameStrategy, RecordNameStrategy, TopicRecordNameStrategy는 각기 다른 방식으로 subject명을 생성하며, 토픽 이름 또는 레코드 이름을 활용한다. 따라서 데이터 스트림의 특성에 맞는 전략 선택이 중요하다.

Avro Union 사용 시 발생 가능한 문제점

Avro Union 타입을 사용하면서 TopicNameStrategy를 사용할 경우, 스키마 등록 시 이름 충돌 문제가 발생할 수 있다. 구체적으로, 동일한 record 이름을 가진 스키마가 존재하면 에러가 발생한다. 네임스페이스를 다르게 정의하여 이 문제를 해결할 수 있다.

실제 개발 경험을 통한 문제 해결

Python 기반 consumer 개발 시 AvroDeserializer 라이브러리의 Union 타입 확장 관련 이슈가 발생했다. 따라서 해당 객체를 상속받아 수정하는 방식으로 문제를 해결했다. 오픈소스 기여를 통해 문제 해결에 기여한 경험은 Schema Registry 도입의 중요한 성공 요인이다.

Confluent Schema Registry 도입기!